package com.cskaoyan.javase.homework.day07.utils.exercise;

import java.util.Scanner;

/**
 * 需求二：
 * 定义一个Scanner工具类ScannerUtils，提供以下方法：
 * 	1，键盘录入字符串
 * 	2，键盘录入int整数
 * 	3，键盘录入一个Person对象（Person类中有age和name属性）
 * 	不要忘记私有化构造器
 *
 * @since 09:25
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Person p = ScannerUtils.getPersonInstanceByScanner();
        System.out.println(p.getAge());
        System.out.println(p.getName());
    }
}

// 键盘录入的工具类
class ScannerUtils {
    // 既然是工具类，首先应该私有化无参构造
    private ScannerUtils() {
    }

    /*
        工具类不能创建对象，不可能有成员变量
        只可能存在静态成员变量

        这里做键盘录入，肯定需要一个Scanner对象
        应该在工具类中直接提供该Scanner对象
     */
    // 工具类当中所有的键盘录入都需要使用同一个对象
    private static Scanner sc = new Scanner(System.in);

    // 1，键盘录入字符串
    public static String getStringByScanner() {
        System.out.println("请键盘录入一个String字符串:");
        return sc.nextLine();
    }

    // 2.键盘录入int整数
    public static int getIntByScanner() {
        System.out.println("请键盘录入一个int整数:");
        String numStr = sc.nextLine();
        int num = Integer.parseInt(numStr);
        return num;
    }

    // 3，键盘录入一个Person对象（Person类中有age和name属性）
    public static Person getPersonInstanceByScanner(){
        System.out.println("请键盘录入一个Person对象的年龄:");
        String ageStr = sc.nextLine();
        int age = Integer.parseInt(ageStr);
        System.out.println("请键盘录入一个Person对象的姓名:");
        String name = sc.nextLine();
        // 创建对象
        return new Person(age, name);
    }
}

class Person {
    private int age;
    private String name;

    public Person() {
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }
}